独習PHP:第1章 PHPについて
第1章
1.1 PHPとwebアプリ
PHP
Hypertext Preprocessor、サーバサイドで動作するスクリプトの実行環境
クライアントとサーバ
インターネットブラウザがここでいうクライアント
クライアントからの要求を受けてサービスを提供するのがwebサーバ
HTTPサーバとも呼ぶ
受け渡し方
HTTPというプロトコルに従って受け渡しをする
HTTPは、ハイパーテキスト(HTML他)を転送するための約束事が制定されたプロトコル
クライアントからの要求に対して、サーバが応答するという想定で規定されている
クライアントサイド技術
JavaScriptなどが該当する
クライアント側にスクリプト(プログラム)と必要なデータをDLさせ
クライアント上で実行する仕組みのこと
サーバサイドとの違い
PHPなどはサーバ側で決めた処理をクライアントに送ることで実装されている
クライアントサイド技術では、データ保有の手段がない
クライアントにスクリプトをDLさせる必要があるので、
機密情報を扱いにくい
トラフィック量が上がる
クライアント側のマシン性能やブラウザ、verに依存しやすい
→サーバサイドは全ての処理をサーバ側で行うので、上記が気にならない
PW扱いOK, 処理結果をhtmlで返すのでトラフィックが低い、クライアント環境に依存しにくい
使い分け
UI操作はクライアントサイド技術を利用すべき
お互いの得手を活かして開発を進めていく
SPA
単一ページで構成されるwebアプリを指すことが多い
初回アクセスでページ全体を取得
以降はクライアントサイド技術(jsなど)でコンテンツを取得し、ページの切り替えは起こらない
リクエスト > ページ全体送信 > jsなどでページ更新 > データの取得/更新は非同期でサーバと通信
メリット
スムーズな操作性の実現
PHPの特徴
習得が容易
シンプルさ、簡易さに力点を置いた言語 = スクリプト言語と呼ばれる
ドキュメントの充実
利用環境が豊富
AWS, GCPも積極的にサポートしている
1.3 PHP環境の設定
PHPに必要なもの
HTTP(web)サーバ
クライアントからの要求をPHPに振り分けて、スクリプトの結果をクライアントに返すために存在する
apache, nginx, IIS(windowsのなど
DBサーバ
PHP(PHPスクリプトを実行するための環境)
PHPの本体
実行エンジンや各種ライブラリ、設定ファイルのテンプレートが入っている
一連のソフトウェア
iniファイルについて
code:php.ini
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
error_reporting = E_ALL
display_errors = "On"
# バッファリング処理: phpの処理結果を専用領域に蓄積し、処理が全て完了した後に出力する仕組み
# オーバーヘッドの軽減、出力結果に対して圧縮や暗号化、コード変換の処理を施せるようになる
# オーバーヘッド: ある処理を行うために、余分にかかってしまう処理のこと
output_buffering = "4096"
設定値
Directive
設定パラメータの名称
Local Value
httpd.confや.htaccessなどで上書きした現在の値のこと
Master Value
php.iniで設定した値のこと
拡張子について
webサーバが拡張子でファイルを判別する
.php: PHPエンジンを実行してPHPスクリプトとする
.html: 指定ファイルを応答させ、html文書化する
.cgiとかその他: 外部の対応したプログラムを実行させる
文字コード
それぞれの文字に割り当てられたコードのこと
文字コードのルールが、SJISやUnicode(utf-8など)と呼ばれる
実際の文字と文字コードの対応関係を、文字エンコーディング
サーバ側で文字列をエンコード(符号化)して、クライアント側でデコード(復号化)する
文字化けの起こる理由
UTF-8でエンコードして、クライアント側でSJISなどでデコードすることで起こる
php.ini
mbstring.internal_encoding = "UTF-8"
vscode
EUC-JPで設定するとブラウザで文字化けする
これはvscodeでエンコードしたものと、コンテナ側でデコードした文字コードが違うから起こる
PHPタグの話
スクリプティングデリミターとも呼ぶ
末尾の?>は省略が規約として一般的